package cn.sylinx.horm.proxy.command.invoker;

import cn.sylinx.horm.config.OrmConfigHolder;
import cn.sylinx.horm.config.ParseSqlType;

abstract class AbstractCommandInvoker implements CommandInvoker {

    protected String getParseSqlType(ParseSqlType type) {

        String parseSqlType = OrmConfigHolder.getParseSqlType();
        ParseSqlType parseSqlTypeConfig = ParseSqlType.getByType(parseSqlType);

        if (parseSqlTypeConfig == null && type == null) {
            return ParseSqlType.SYSTEM.getType();
        }

        if (parseSqlTypeConfig == null) {
            return type.getType();
        }

        if (type == null) {
            return parseSqlType;
        }

        if (parseSqlTypeConfig != type) {
            return type.getType();
        }

        return parseSqlType;
    }
}